A. Field of Invention
This invention relates to the field of computer software, and more specifically, software packaging and distribution. Portions of this patent document may contain material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office file or records, but otherwise reserves all copyright rights whatsoever.
Sun, Sun Microsystems, the Sun logo, Solaris, xe2x80x9cWrite Once, Run Anywherexe2x80x9d, Java, JavaOS, JavaStation and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. All SPARC trademarks are used under license and are trademarks of SPARC International, Inc. in the United States and other countries. Products bearing SPARC trademarks are based upon an architecture developed by Sun Microsystems, Inc.
B. Background Art
Software developers, vendors and manufacturers prepare and distribute software in packages, using a packaging system. A software package is comprised of multiple files. A packaging system is a tool that is used to bundle these multiple files together so that the software can be easily distributed as a single package. Each package, typically, includes the software files that are required for installation of the software and a mechanism that is implemented so that a user can install the software on a computer or later remove (or uninstall) the software.
Most current packaging systems are complicated, inefficient and difficult to use. For example, they are non-intuitive such that a user has to read a manual or follow numerous procedures in order to build or install a software package. Further, current systems are not web-enabled and do not allow for installation or configuration of software packages from a remote location, via the Internet. A method is needed to provide an efficient and simple solution for packaging, distributing and installing software.
Most current packaging systems provide a method for installing software and for removing some of the components of the installed software from a computer system using an uninstall feature. However, current systems do not provide sufficient descriptive information about the content, type, location, and/or the time that the software was installed nor any means to easily track any of this information.
It would be useful if the above information were retrievable during or prior to installation or removal of software packages for a user""s review. It would also be useful if this information were accessible from one specific compact source so that the storage space and the transmission bandwidth required for data storage and delivery are minimized.
Most prior art packaging systems available fail to provide a packaging system that can install or setup software from a remote location through various communication systems, such as the Internet, that identifies if package contents are intact or if they have been tampered with, or that is portable across different platforms (i.e., operating systems and hardware architectures). For example, most of the current packaging systems are vendor and system specific and do not support cross-platform portability. Prior art packages can execute only on selected platforms.
Prior art packaging systems are complex. As a result, building or installing software packages using the prior art packaging systems results in high overhead costs. The problems of the current software packaging systems can be better understood from a discussion of the Internet and a description of software packaging systems currently available.
Some current packaging systems are developed by software manufacturers or distributors. These systems are used at the manufacturing or development sites to create a software package for shipment to end users, or are used to install or otherwise configure.
Sun Microsystems corporation has developed a vendor-specific packaging system entitled xe2x80x9cpkgadd system.xe2x80x9d This system enforces dependencies among software components. This means that the system detects the relationships between different components of a software package (e.g., software files that refer to or need to access the content of other files) and ensures that installation or removal of all dependent components takes place properly. Solaris"" packaging system can be used to build a software package and/or to install and remove system software.
A disadvantage of the xe2x80x9cpkgadd systemxe2x80x9d is that package creation and/or installation procedures, while documented, are tedious and complex. A user, for example, must follow multiple procedures and enter a number of commands to create or install a package. Furthermore, the system implements its own packaging format (i.e., an unbundled directory structure) that is different (and difficult to understand) than the standard file format typically used for saving information. Therefore, using the system is non-intuitive and difficult for most non-technical or even technical users.
Another disadvantage of the pkgadd system is that it is non-portable across different platforms. The Solaris platform is the only platform that pkgadd system can execute on. Thus, the system is inoperable on other more commonly used platforms in the market today. Another disadvantage with the pkgadd system is that it does not allow for installation or distribution of software packages via the Internet.
In addition to vendor-supplied software packaging systems, freeware systems are also available that provide software packaging options. Freeware systems are generally developed and distributed by software manufacturers and are freely available to public for use.
xe2x80x9cRPM(2),xe2x80x9d created by RedHat Software Corporation is one of the more popular freeware packaging systems currently available. It enforces strong dependencies, installs and removes system software, and can be used to build a complete operation system. It is also portable over a number of different platforms.
A disadvantage of the RPM system is that package creation is non-intuitive and complex. For example, a 400 page user manual accompanies the system, explaining its features and how it can be used. Further, RPM does not adapt well with other computing systems that may be used to develop a software package and does not provide an adequate solution when used in parallel with other computer system utilities. RPM imposes a significant amount of overhead on system resources before it can begin to be used effectively.
The Internet is a client/server system that includes a worldwide network of interconnected computers. A xe2x80x9cclientxe2x80x9d is the computer that is used to access the Internet. An Internet client accesses a computer on the network (xe2x80x9cserverxe2x80x9d) via an Internet provider. An Internet provider is an organization that provides a client with access to the Internet (via analog telephone line or Integrated Services Digital Network line, for example). Typically, when a user logs onto the Internet or the World Wide Web (WWW), using a client computer, the user views xe2x80x9cweb pagesxe2x80x9d that are stored on a remote server. Information including data files, and the web pages are often shared and transferred between the client and the server.
A client may, for example, access resources on another computer (i.e., a remote server) to install or retrieve a software from that computer, using the Internet. To access a resource on a remote server an addressing scheme is used that defines the route (or path) to that resource. For example, a home page on the WWW can be accessed via its Uniform Resource Locator (URL).
URLs define the method used, the name of the remote server (domain name), and other information necessary for accessing a resource, such as the path or directories where the resource is located. One method of retrieval may be more efficient than another method depending on the type of resources accessed and the manner the information are transferred from the server to the client.
The components of the Internet include browser software, network links, and servers. The browser software, or browser, is a user-friendly interface that simplifies access to the Internet. A browser allows a client to communicate a request without having to learn a complicated command syntax, for example. A browser typically provides a graphical user interface (GUI) for displaying information and receiving input. Examples of browsers currently available include Netscape Navigator and Internet Explorer.
A browser displays information to a client or user as pages or documents. A language called Hypertext Markup Language (HTML) is used to define the format for a page to be displayed in the browser. A Web page is transmitted to a client as an HTML document. The browser executing at the client parses the document and produces and displays a Web Page based on the information in the HTML document. Consequently, the HTML document defines the Web Page that is rendered at runtime on the browser.
A method and apparatus for efficient packaging and distribution of software is described. Embodiments of the invention comprise a software packaging system that is portable and easy to use and understand. It works for constructing software packages and distributing them to end-users.
Using one or more embodiments of the invention, a software package may be installed from an indirect source referenced by a Uniform Resource Locator. Each package is self-contained in the form of a single-file entity that comprises a payload file and a control file. The payload file is an archive file that contains a compressed collection of all the software files that are required for installation of the software package. The control file can be a text file, for example, and includes the necessary information for decompression and installation of the files contained in the payload file, in addition to other descriptive information pertaining to the package.
The above information is used to determine the size, type, location of storage, and other useful attributes of a software package, even before it is installed on a system. This gives a user the advantage of deciding in advance whether or not to install the software. This feature is specifically helpful where the retrieval of the package itself can take a long time, for example, in instances where a sizable package is downloaded from a remote source via telecommunication lines.
Security measures have been implemented in the system to detect a package that has been tampered with. Embodiments of the invention are implemented to be portable across platforms allowing the system to operate on different computer systems without substantial modification.
Additionally, embodiments of the invention are web-enabled. Thus, it can be utilized to install packaged software that is accessible via the Internet. A package on a remote source can be accessed and installed using a Uniform Resource Locator (URL) that indicates the package""s specific address on the remote source as if the package was locally available to the system.
One or more embodiments of the invention are designed such that the storage space and the transmission bandwidth required for its storage or transport can be maintained at a minimum. Embodiments of the invention may be used to install, remove or upgrade a software package. The invention can also be used to catalogue and describe prior installed software, uninstalled software packages, and can verify the integrity of a package prior to installation.